/*
 * Description: HOST服务提供给GUEST函数类
 */

#ifndef SENDTO_HOST_H
#define SENDTO_HOST_H

#include "iservice.h"
#include "interface.h"

namespace WINCONTROL {

class SendToHost : public COMMON::IService {
public:
    explicit SendToHost(const std::string &client) : IService("HostService", client)
    {};

    /********************
    * 函数：ConnectServer
    * 功能：Guest连接HostServer
    * 返回：是否成功
    ********************/
    int ConnectServer();

    /********************
    * 函数：DisConnectServer
    * 功能：Guest断开连接HostServer
    * 参数：NA
    * 返回：成功返回0,失败返回-1
    ********************/
    int DisConnectServer();

    /********************
    * 函数：BootComplete
    * 功能：Guest通知Host连接成功
    * 参数：NA
    * 返回：NA
    ********************/
    void BootComplete();

    /********************
    * 函数：ShutDown
    * 功能：Guest通知Host关机事件
    * 参数：NA
    * 返回：NA
    ********************/
    void Shutdown();

    /********************
    * 函数：QuickStartShutdown
    * 功能：Guest通知Host快启启动关机事件
    * 参数：NA
    * 返回：NA
    ********************/
    void QuickStartShutdown();

    /********************
    * 函数：GuestSessionChange
    * 功能：Guest通知Host session change事件
    * 参数：NA
    * 返回：NA
    ********************/
    void GuestSessionChange(int32_t state);

    /********************
    * 函数：PerfRequest
    * 功能：通知Host提频
    * 参数：提频场景类型，Guest应用名
    * 返回：NA
    ********************/
    void SendPerfRequestToHost(std::string scene, std::string appName, bool isStartSign);

    /********************
    * 函数：EnableOrDisableScreenLock
    * 功能：通知HOST是否开启关闭屏幕锁
    * 参数：flag:true表示开启，false表示关闭
    * 返回：NA
    ********************/
    void EnableOrDisableScreenLock(bool flag);

    /********************
    * 函数：UnmountUnattend
    * 功能：去挂载应答文件
    * 参数：NA
    * 返回：NA
    ********************/
    void UnmountUnattend();

    /********************
    * 函数：SyncUpdateProcStatus
    * 功能：Guest通知Host更新进程的启停
    * 参数：更新进程是否存在
    * 返回：NA
    ********************/
    void SyncUpdateProcStatus(bool state);

#ifdef _FUZZ
    /********************
    * 函数：StartFuzz
    * 功能：Fuzz开始
    * 参数：NA
    * 返回：无
    ********************/
    int StartFuzz();

    /********************
    * 函数：FuzzMsg
    * 功能：Fuzz消息处理
    * 参数：id:函数ID
            parameters:函数参数
    * 返回：无
    ********************/
    void FuzzMsg(int id, const google::protobuf::MessageLite &parameters);
#endif
};

}

#endif // SENDTO_HOST_H
